Project Euler
- 공식 홈페이지 - projecteuler.net
- 한글 번역 - projecteuler @kr
- (HackerRank) ProjectEuler+ - hackerrank.com
Problem
Problem list
- No 2 : Even Fibonacci numbers
- HackerRank : Project Euler #2: Even Fibonacci numbers
Simple Code
문제에 충실하게 4백만(4,000,000) 보다 작은 피보나치 수열에서 짝수들의 합을 구했다
(짧게 코드를 구현할 수 있지만 가독성을 위해 피보나치 수열을 만들고 짝수들의 합을 구하는 함수를 따로 정의했다)
def fibonacci(max_num): |
위 풀이 방식을 그대로 적용해도 문제 없이 모든 테스트 케이스를 통과한다.
def fibonacci(max_num): |
하지만 짝수인 피보나치 수열들을 잘 살펴보면 [2, 8, 34, 144, 610, …]
8 = 2 * 4 + 0
34 = 8 * 4 + 2
144 = 34 * 4 + 8
610 = 144 * 4 + 34
즉,다음 짝수 = 이전 짝수 * 4 + 전전 짝수
라는 규칙을 발견할 수 있다
def even_fibonacci(max_num): |
피보나치 수열에서 짝수들은 3칸씩 떨어져 있음을 알게되었다.
불필요하게 모든 피보나치 수열을 구하지 말자